/* Soubor je ulozen v kodovani UTF-8.
 * Kontrola kódování: Příliš žluťoučký kůň úpěl ďábelské ódy. */

package cz.vse.adventura.po1715.xshet00_shevtsova.hra;


import static cz.vse.adventura.po1715.xshet00_shevtsova.hra.Texty.*;


/*******************************************************************************
 * Instance třídy {@code PrikazVezmi} představují příkaz vezmi
 *
 * @author    Tatyana Shevtsova
 * @version   
 */
public class PrikazVezmi extends APrikaz
{
//== KONSTANTNI ATRIBUTY TRIDY =================================================
//== PROMENNE ATRIBUTY TRIDY ===================================================
//== KONSTANTNI ATRIBUTY INSTANCI ==============================================
//== PROMENNE ATRIBUTY INSTANCI ================================================
//== NESOUKROME METODY TRIDY ===================================================

//##############################################################################
//== KONSTRUKTORY A TOVARNI METODY =============================================

    /***************************************************************************
     * Vytvori prikaz <b>vezmi</b>.
     */
    PrikazVezmi()
    {
        super(pVEZMI, //"Vezmi",
           "Příkaz odebere předmět zadaného názvu z aktuální místnosti\n" +
           "a umístí jej do batohu.\n" +
           "Aby byl příkaz proveden, musí byt\n" +
           "- zadán název předmětu, který se v místnosti vyskytuje,\n" +
           "- předmět musí byt zvednutelný a\n" +
           "- v batohu musí byt ještě volné místo.");
    }


//== ABSTRAKTNI METODY =========================================================
//== NESOUKROME METODY INSTANCI ================================================

    /***************************************************************************
     * Vezme z místnosti předmět zadaného názvu a umístí je do batohu;
     * nejprve však zkontroluje, zda byl vůbec zadán název předmětu,
     * který se má zvednout, zda je tento předmět zvednutelný a zda se další
     * předmět ještě vejde do batohu.
     *
     * @param  parametry Nazev zvedaneho predmetu
     * @return Text zpravy vypsane po porovedeni prikazu
     */
    @Override
    public String execute( String... parametry )
    {
        if (parametry.length == 0) {
            return zPŘEDMĚT_NEZADAN;
//            return "Je třeba zadat název zvedaného předmětu";   //==========>
        }
        String   nazev   = parametry[0];
        Hra_destnik      hra     = Hra_destnik.getHra();
        Mistnost am      = hra.getActualPlace();
        Object predmet = am.zvedni( nazev );
        if (predmet == null ) {
            return zNENÍ_PŘEDMĚT + nazev;
//            return "Zadaný předmět v místnosti není: " + nazev; //==========>
        }
        if (predmet == Object.TIHA) {
            return zTĚŽKÝ_PŘEDMĚT + nazev;
//            return "Zadaný předmět nejde zvednout: " + nazev;   //==========>
        }
        Bag batoh = hra.getBag();
        if (! batoh.pridej(predmet)) {
            am.poloz( predmet );
            return zBATOH_PLNÝ;
//            return "Zadaný předmět nemůžete vzít, máte už obě ruce plné.";
                                                          //==========>
        }


         if (batoh.obsahuje("Deštník")) {
             return "VITEZTVÍ!!!! Vyhral(a) si  "+ zKONEC;
         }


        return zZVEDNUTO + predmet.getName();
//        return "Vzal(a) jste předmět: " + predmet.getName();   //==========>
    }


//== SOUKROME A POMOCNE METODY TRIDY ===========================================
//== SOUKROME A POMOCNE METODY INSTANCI ========================================
//== VNORENE A VNITRNI TRIDY ===================================================
//== TESTY A METODA MAIN =======================================================
}
